Amazon S3 Tables のポリシー管理コマンドの解説 #AWSreInvent
AWS事業本部コンサルティング部の石川です。Amazon S3 TablesのTable Bucket Policyは、S3 Tablesのリソースに対するアクセス制御を管理するためのポリシーです。このポリシーを使用することで、テーブルバケットやテーブルレベルでAPIアクセス権限を付与することができます。
aws s3tables
コマンドを使用して、Amazon S3 Tables のTable BucketやTableの管理コマンドの解説します。
S3 Tables のポリシー管理とは
Amazon S3 Tablesのポリシー管理は、S3 Tablesのリソースに対するアクセス制御を管理するためのポリシーです。このポリシーを使用することで、テーブルバケットやテーブルレベルでAPIアクセス権限を付与することができます。
Table Bucket Policyの主な特徴
アクセス制御の柔軟性
Table Bucket Policyを使用すると、以下のようなきめ細かいアクセス制御が可能になります。
- 個々のテーブルへのアクセス
- テーブルバケット全体へのアクセス
セキュリティの強化
S3 Tablesは、Amazon S3とは異なるs3tables
という独自のサービス名前空間を使用します。これにより、S3 Tablesサービスとそのリソースに特化したポリシーを設計できます。
Table Bucket Policyのメリット
ポリシー管理を使用することで、S3 Tablesのリソースに対するアクセス制御を効果的に管理し、セキュリティを強化しつつ、必要な操作を柔軟に許可することができます。これにより、データレイクの管理が容易になり、コンプライアンス要件にも対応しやすくなります。
細かいアクセス制御
テーブルバケットやテーブルレベルで権限を設定できるため、データへのアクセスを詳細に制御できます。
セキュリティの向上
必要最小限の権限を付与することで、データのセキュリティを強化できます。
管理の簡素化
複数のテーブルに対して同じ権限セットを定義する場合、テーブルバケットポリシーを使用することで管理が容易になります。
コンプライアンスの遵守
規制産業における多テナント環境やデータ分離要件に対応できます。
ポリシー管理コマンド
Amazon S3 Tables のポリシー管理するための様々な操作が可能です。主な操作には以下のようなものがあります。
カテゴリ | コマンド | 機能概要 |
---|---|---|
Table Bucket Policy | get-table-bucket-policy | テーブルバケットポリシーの取得 |
put-table-bucket-policy | テーブルバケットポリシーの設定 | |
delete-table-bucket-policy | テーブルバケットポリシーの削除 | |
Table Policy | get-table-policy | テーブルポリシーの取得 |
put-table-policy | テーブルポリシーの設定 | |
delete-table-policy | テーブルポリシーの削除 |
Table Bucket の管理コマンド
Table Bucket Policy の表示
コマンド
aws s3tables get-table-bucket-policy \
--table-bucket-arn <table-bucket-arn>
--table-bucket-arn
: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。
コマンドが成功すると、ポリシーのJSONテキストが返されます。
実行例
$ aws s3tables get-table-bucket-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221
{
"resourcePolicy": "{\"Version\":\"2012-10-17\",\"Id\":\"VPCEAccessPolicy\",\"Statement\":[{\"Sid\":\"AccessFromSpecificVPCEOnly\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"s3tables:*\",\"Resource\":\"*\",\"Condition\":{\"StringEquals\":{\"aws:SourceVpce\":\"vpce-03267f6d1d9cffaad\"}}}]}"
}
なお、作成した直後の Table Bucket は、Table Bucket Policy がないのでエラーになります。
$ aws s3tables get-table-bucket-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221
An error occurred (NotFoundException) when calling the GetTableBucketPolicy operation: The specified bucket policy does not exist.
Table Bucket Policy の作成
コマンド
aws s3tables put-table-bucket-policy \
--table-bucket-arn <table-bucket-arn> \
--resource-policy <policy_json_string>
--table-bucket-arn
: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。--resource-policy
: 作成したいTableのポリシードキュメントをJSONで指定します。
実行例
$ aws s3tables put-table-bucket-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
> --resource-policy '{
> "Version": "2012-10-17",
> "Id": "VPCEAccessPolicy",
> "Statement": [
> {
> "Sid": "AccessFromSpecificVPCEOnly",
> "Effect": "Deny",
> "Principal": "*",
> "Action": "s3tables:*",
> "Resource": [
> "*"
> ],
> "Condition": {
> "StringNotEquals": {
> "aws:SourceVpce": "vpce-03267f6d1d9cffaad"
> }
> }
> }
> ]
> }'
Table Bucket Policy の削除
コマンド
aws s3tables delete-table-bucket-policy \
--table-bucket-arn <table-bucket-arn>
--table-bucket-arn
: ポリシーを削除するTable BucketのAmazon Resource Name (ARN)を指定します。
実行例
$ aws s3tables delete-table-bucket-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221
Table の管理コマンド
Table Policy の表示
コマンド
aws s3tables get-table-policy \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name>
-
--table-bucket-arn
: ポリシーを表示するTable BucketのAmazon Resource Name (ARN)を指定します。 -
--namespace
: ポリシーを表示するNamespace名を指定します。 -
--name
: ポリシーを表示するTable名を指定します。
コマンドが成功すると、ポリシーのJSONテキストが返されます。
実行例
$ aws s3tables get-table-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
> --namespace cm_namespace \
> --name lineorder
{
"resourcePolicy": "{\"Version\":\"2012-10-17\",\"Id\":\"VPCEAccessPolicy\",\"Statement\":[{\"Sid\":\"AccessFromSpecificVPCEOnly\",\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"s3tables:*\",\"Resource\":\"arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221/table/b2b01673-86df-498f-9290-e1c2cdcd31fc\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-03267f6d1d9cffaad\"}}}]}"
}
なお、作成した直後の Table Bucket は、Table Bucket Policy がないのでエラーになります。
$ aws s3tables get-table-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
> --namespace cm_namespace \
> --name lineorder
An error occurred (NotFoundException) when calling the GetTablePolicy operation: The specified table policy does not exist.
Table Policy の作成
コマンド
aws s3tables put-table-policy \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name> \
--resource-policy <policy_json_string>
--table-bucket-arn
: ポリシーを作成するTable BucketのAmazon Resource Name (ARN)を指定します。--namespace
: ポリシーを作成するNamespace名を指定します。--name
: ポリシーを作成するTable名を指定します。--resource-policy
: 作成したいTableのポリシードキュメントをJSONで指定します。
実行例
$ aws s3tables put-table-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
> --namespace cm_namespace \
> --name lineorder \
> --resource-policy '{
> "Version": "2012-10-17",
> "Id": "VPCEAccessPolicy",
> "Statement": [
> {
> "Sid": "AccessFromSpecificVPCEOnly",
> "Effect": "Deny",
> "Principal": "*",
> "Action": "s3tables:*",
> "Resource": [
> "arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221/table/b2b01673-86df-498f-9290-e1c2cdcd31fc"
> ],
> "Condition": {
> "StringNotEquals": {
> "aws:SourceVpce": "vpce-03267f6d1d9cffaad"
> }
> }
> }
> ]
> }'
Table Bucket Policy の削除
コマンド
aws s3tables delete-table-policy \
--table-bucket-arn <table-bucket-arn> \
--namespace <namespace-name> \
--name <table-name>
--table-bucket-arn
: ポリシーを削除するTable BucketのAmazon Resource Name (ARN)を指定します。--namespace
: ポリシーを削除するNamespace名を指定します。--name
: ポリシーを削除するTable名を指定します。
実行例
$ aws s3tables delete-table-policy \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241221 \
> --namespace cm_namespace \
> --name lineorder
最後に
Amazon S3 Tablesのポリシー管理は、データアクセスの制御と安全性の確保において重要な役割を果たしています。Table Bucket PolicyとTable Policyを適切に設定することで、テーブルバケット、テーブルレベルでのきめ細かいアクセス制御が可能となり、セキュリティの強化とコンプライアンス要件への対応が容易になります。
AWS CLIを使用したポリシーの管理コマンドにより、ポリシーの表示、作成、削除が効率的に行えるため、管理者はデータレイクのセキュリティを迅速かつ効果的に維持することができます。この機能を活用することで、組織はデータの保護と適切なアクセス管理を両立させ、安全かつ柔軟なデータ活用環境を構築することが可能となります。